import re
import sys

def check_log_thread_safety(log_file):
    """检查日志文件是否存在多线程输出错乱"""
    # 日志格式正则：提取线程ID和日志内容（需与配置文件中的formatter匹配）
    log_pattern = re.compile(r'.*?\[(\d+)\].*?index: (\d+)')
    error_count = 0

    with open(log_file, 'r') as f:
        for line_num, line in enumerate(f, 1):
            match = log_pattern.match(line.strip())
            if not match:
                print(f"警告：日志格式不匹配，行号：{line_num}，内容：{line}")
                continue
            
            thread_id = match.group(1)
            # 检查当前行是否包含其他线程ID（简单验证：是否有其他数字被[]包裹）
            other_threads = re.findall(r'\[(\d+)\]', line.strip())
            if len(other_threads) > 1 or (other_threads and other_threads[0] != thread_id):
                print(f"错误：日志错乱，行号：{line_num}，内容：{line}")
                error_count += 1

    if error_count == 0:
        print(f"检查通过：{log_file} 中未发现多线程日志错乱")
    else:
        print(f"检查失败：共发现 {error_count} 处日志错乱")
    return error_count

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"用法：{sys.argv[0]} <日志文件路径>")
        sys.exit(1)
    sys.exit(check_log_thread_safety(sys.argv[1]))